package com.enjoyor.soa.traffic.api.service.dubbo.psms;

import java.util.Date;

import com.enjoyor.soa.traffic.api.dto.psms.AbsentPlanDto;
import com.enjoyor.soa.traffic.api.dto.psms.AttendRecordDto;
import com.enjoyor.soa.traffic.api.dto.psms.PoliceAttendDto;
import com.enjoyor.soa.traffic.api.dto.psms.PostAttendDto;
import com.enjoyor.soa.traffic.util.pojo.Page;
import com.enjoyor.soa.traffic.util.pojo.ResultPojo;

/**
 * 
 * @ClassName: DubboAttendanceService
 * @Description: TODO(这里用一句话描述这个类的作用)
 * @author yrch 961774545@qq.com
 * @date 2017年11月6日 下午1:47:09
 *
 */

public interface DubboAttendanceService {

	/**
	 * 删除岗位考勤信息
	 * 
	 * @param token
	 * @param systemKey
	 * @param postAttendId
	 * @param user
	 * @param ip
	 * @param sysName
	 * @return
	 */
	public ResultPojo removePostAttend(String token, String systemKey, String postAttendId, String user, String ip,
			String sysName);

	/**
	 * 保存岗位考勤信息
	 * 
	 * @param token
	 * @param systemKey
	 * @param postAttendDto
	 * @param user
	 * @param ip
	 * @param sysName
	 * @return
	 */
	public ResultPojo savePostAttend(String token, String systemKey, PostAttendDto postAttendDto, String user,
			String ip, String sysName);

	/**
	 * 查询岗位考勤信息
	 * 
	 * @param token
	 * @param systemKey
	 * @param deptId
	 * @param postId
	 * @param beginTime
	 * @param endTime
	 * @return
	 */
	public ResultPojo listPostAttend(String token, String systemKey, String postAttendId, String deptId, String postId,
			String postName, String policeId, String policeName, Date beginTime, Date endTime, Date scheBeginTime,
			Date scheEndTime, Date planDate);

	/**
	 * 查询岗位考勤分页信息
	 * 
	 * @param token
	 * @param systemKey
	 * @param deptId
	 * @param postId
	 * @param beginTime
	 * @param endTime
	 * @param page
	 * @return
	 */
	@SuppressWarnings("rawtypes")
	public ResultPojo pagePostAttend(String token, String systemKey, String postAttendId, String deptId, String postId,
			String postName, String policeId, String policeName, Date beginTime, Date endTime, Date scheBeginTime,
			Date scheEndTime, Date planDate, Page page);

	/**
	 * 
	 * @param token
	 * @param systemKey
	 * @param postAttendDto
	 * @param user
	 * @param ip
	 * @param sysName
	 * @return
	 */
	public ResultPojo modifyPostAttend(String token, String systemKey, PostAttendDto postAttendDto, String user,
			String ip, String sysName);

	/**
	 * 删除警员考勤信息
	 * 
	 * @param token
	 * @param systemKey
	 * @param policeAttendId
	 * @param user
	 * @param ip
	 * @param sysName
	 * @return
	 */
	public ResultPojo removePoliceAttend(String token, String systemKey, String policeAttendId, String user, String ip,
			String sysName);

	/**
	 * 保存岗位考勤信息
	 * 
	 * @param token
	 * @param systemKey
	 * @param policeAttendDto
	 * @param user
	 * @param ip
	 * @param sysName
	 * @return
	 */
	public ResultPojo savePoliceAttend(String token, String systemKey, PoliceAttendDto policeAttendDto, String user,
			String ip, String sysName);

	/**
	 * 查询警员考勤信息
	 * 
	 * @param token
	 * @param systemKey
	 * @param deptId
	 * @param postId
	 * @param policeId
	 * @param beginTime
	 * @param endTime
	 * @return
	 */
	public ResultPojo listPoliceAttend(String token, String systemKey, String policeAttendId, String deptId,
			String postId, String postName, String policeId, String policeName, Date beginTime, Date endTime,
			Date scheBeginTime, Date scheEndTime, Date planDate);

	/**
	 * 查询警员考勤分页信息
	 * 
	 * @param token
	 * @param systemKey
	 * @param deptId
	 * @param postId
	 * @param policeId
	 * @param beginTime
	 * @param endTime
	 * @param page
	 * @return
	 */
	@SuppressWarnings("rawtypes")
	public ResultPojo pagePoliceAttend(String token, String systemKey, String policeAttendId, String deptId,
			String postId, String postName, String policeId, String policeName, Date beginTime, Date endTime,
			Date scheBeginTime, Date scheEndTime, Date planDate, Page page);

	/**
	 * 修改警员考勤信息
	 * 
	 * @param token
	 * @param systemKey
	 * @param policeAttendDto
	 * @param user
	 * @param ip
	 * @param sysName
	 * @return
	 */
	public ResultPojo modifyPoliceAttend(String token, String systemKey, PoliceAttendDto policeAttendDto, String user,
			String ip, String sysName);

	/**
	 * 删除考勤记录
	 * 
	 * @param token
	 * @param systemKey
	 * @param AttendRecordId
	 * @param rltId
	 * @param user
	 * @param ip
	 * @param sysName
	 * @return
	 */
	public ResultPojo removeAttendRecord(String token, String systemKey, String AttendRecordId, String rltId,
			String user, String ip, String sysName);

	/**
	 * 保存考勤记录
	 * 
	 * @param token
	 * @param systemKey
	 * @param attendRecordDto
	 * @param user
	 * @param ip
	 * @param sysName
	 * @return
	 */
	public ResultPojo saveAttendRecord(String token, String systemKey, AttendRecordDto attendRecordDto, String user,
			String ip, String sysName);

	/**
	 * 查询考勤记录信息
	 * 
	 * @param token
	 * @param systemKey
	 * @param deptId
	 * @param postId
	 * @param policeId
	 * @param beginTime
	 * @param endTime
	 * @param rltId
	 *            关联Id
	 * @return
	 */
	public ResultPojo listAttendRecord(String token, String systemKey, String deptId, String postId, String policeId,
			Date beginTime, Date endTime, String rltId, String attendRecordId);

	/**
	 * 查询考勤记录分页信息
	 * 
	 * @param token
	 * @param systemKey
	 * @param deptId
	 * @param postId
	 * @param policeId
	 * @param beginTime
	 * @param endTime
	 * @param rltId
	 *            关联Id
	 * @param page
	 * @return
	 */
	@SuppressWarnings("rawtypes")
	public ResultPojo pageAttendRecord(String token, String systemKey, String deptId, String postId, String policeId,
			Date beginTime, Date endTime, String rltId, String attendRecordId, Page page);

	/**
	 * 修改考勤记录
	 * 
	 * @param token
	 * @param systemKey
	 * @param attendRecordDto
	 * @param user
	 * @param ip
	 * @param sysName
	 * @return
	 */
	public ResultPojo modifyAttendRecord(String token, String systemKey, AttendRecordDto attendRecordDto, String user,
			String ip, String sysName);

	/**
	 * 删除报备
	 * 
	 * @param token
	 * @param systemKey
	 * @param absentPlanId
	 *            报备标号
	 * @param rltId
	 *            关联编号 schePlanId 或者 schePlanPoliceId
	 * @param user
	 * @param ip
	 * @param sysName
	 * @return
	 */
	public ResultPojo removeAbsentPlan(String token, String systemKey, String absentPlanId, String rltId, String user,
			String ip, String sysName);

	/**
	 * 
	 * @param token
	 * @param systemKey
	 * @param absentPlanDto
	 *            报备信息对象
	 * @param user
	 * @param ip
	 * @param sysName
	 * @return
	 */
	public ResultPojo saveAbsentPlan(String token, String systemKey, AbsentPlanDto absentPlanDto, String user,
			String ip, String sysName);

	/**
	 * 报备信息查询
	 * 
	 * @param token
	 * @param systemKey
	 * @param absentPlanId
	 * @param deptId
	 * @param postId
	 * @param postName
	 * @param policeId
	 * @param policeName
	 * @param beginTime
	 * @param endTime
	 * @param status
	 * @param rltId
	 * @return
	 */
	public ResultPojo listAbsentPlanForPost(String token, String systemKey, String absentPlanId, String deptId,
			String postId, String postName, String policeId, String policeName, Date beginTime, Date endTime,
			String status, String rltId);

	/**
	 * 报备信息分页查询
	 * 
	 * @param token
	 * @param systemKey
	 * @param absentPlanId
	 * @param deptId
	 * @param postId
	 * @param postName
	 * @param policeId
	 * @param policeName
	 * @param beginTime
	 * @param endTime
	 * @param status
	 * @param rltId
	 * @return
	 */
	public ResultPojo listAbsentPlanForPolice(String token, String systemKey, String absentPlanId, String deptId,
			String postId, String postName, String policeId, String policeName, Date beginTime, Date endTime,
			String status, String rltId);

	/**
	 * 
	 * @param token
	 * @param systemKey
	 * @param absentPlanId
	 * @param deptId
	 * @param postId
	 * @param postName
	 * @param policeId
	 * @param policeName
	 * @param beginTime
	 * @param endTime
	 * @param status
	 * @param rltId
	 * @param page
	 * @return
	 */
	@SuppressWarnings("rawtypes")
	public ResultPojo pageAbsentPlanForPost(String token, String systemKey, String absentPlanId, String deptId,
			String postId, String postName, String policeId, String policeName, Date beginTime, Date endTime,
			String status, String rltId, Page page);

	/**
	 * 分页查询报备信息
	 * 
	 * @param token
	 * @param systemKey
	 * @param absentPlanId
	 * @param deptId
	 * @param postId
	 * @param postName
	 * @param policeId
	 * @param policeName
	 * @param beginTime
	 * @param endTime
	 * @param status
	 * @param rltId
	 * @param page
	 * @return
	 */
	@SuppressWarnings("rawtypes")
	public ResultPojo pageAbsentPlanForPolice(String token, String systemKey, String absentPlanId, String deptId,
			String postId, String postName, String policeId, String policeName, Date beginTime, Date endTime,
			String status, String rltId, Page page);

	/**
	 * 修改报备信息
	 * 
	 * @param token
	 * @param systemKey
	 * @param absentPlanDto
	 * @param user
	 * @param ip
	 * @param sysName
	 * @return
	 */
	public ResultPojo modifyAbsentPlan(String token, String systemKey, AbsentPlanDto absentPlanDto, String user,
			String ip, String sysName);

	/**
	 * 
	 * @param token
	 * @param systemKey
	 * @param beginTime
	 *            当前开始时间
	 * @param endTime
	 *            当前结束时间
	 * @param user
	 * @param ip
	 * @param sysName
	 * @return
	 */
	public ResultPojo attendRealtimeMonitorNum(String token, String systemKey, String deptId, Date beginTime,
			Date endTime, String user, String ip, String sysName);

	/**
	 * 
	 * @param token
	 * @param systemKey
	 * @param deptId
	 * @param scheBeginTime
	 * @param scheEndTime
	 * @param onPostStatus
	 * @param page
	 * @return
	 */
	@SuppressWarnings("rawtypes")
	public ResultPojo pagePoliceAttendRealtimeStatus(String token, String systemKey, String deptId, Date scheBeginTime,
			Date scheEndTime, String getPostStatus, String onPostStatus, Page page);

	/**
	 * 
	 * @param token
	 * @param systemKey
	 * @param deptId
	 * @param scheBeginTime
	 * @param scheEndTime
	 * @param page
	 * @return
	 */
	@SuppressWarnings("rawtypes")
	public ResultPojo pagePostAttendRealtimeStatus(String token, String systemKey, String deptId, Date scheBeginTime,
			Date scheEndTime, String getPostStatus, String onPostStatus, Page page);

	/**
	 * 综合运行监测系统考勤数据统计
	 * @param token
	 * @param systemKey
	 * @param deptId
	 * @param beginTime
	 * @param endTime
	 * @return
	 * 
	 * 到岗状态（考勤结果），包括：
	        正常到岗（ATTENDANCE01）
	        迟到（ATTENDANCE02）
	        早退（ATTENDANCE03）
                    缺勤（ATTENDANCE04）
	        执勤状态（稽查结果），包括：
	       在岗（ATTENDANCE05），
	       脱岗（ATTENDANCE06）
	       未开始（ATTENDANCE07）
	       已经结束（ATTENDANCE07）
	 */
	public ResultPojo  postAttendRealDataCount(String token, String systemKey, String deptId, Date beginTime, Date endTime);
	
	
	/**
	 * 综合运行监测系统考勤数据统计
	 * @param token
	 * @param systemKey
	 * @param deptId
	 * @param beginTime
	 * @param endTime
	 * @return
	 * 
	 * 到岗状态（考勤结果），包括：
	        正常到岗（ATTENDANCE01）
	        迟到（ATTENDANCE02）
	        早退（ATTENDANCE03）
                    缺勤（ATTENDANCE04）
	        执勤状态（稽查结果），包括：
	       在岗（ATTENDANCE05），
	       脱岗（ATTENDANCE06）
	       未开始（ATTENDANCE07）
	       已经结束（ATTENDANCE07）
	 */
	public ResultPojo  policeAttendRealDataCount(String token, String systemKey, String deptId, Date beginTime, Date endTime);
	
	
	
}
